# -*- coding: utf-8 -*-
"""
@Time    : 2024/8/30 16:15 
@Author  : ZhangShenao 
@File    : PDF图片提取.py 
@Desc    : 使用pdfplumber库,实现PDF文件中的图片提取
"""

import pdfplumber


def extract_image_from_pdf(pdf_path: str, page_no: int, img_save_path: str):
    """
    提取PDF文件中的图片
    :param pdf_path: PDF文件路径
    :param page_no: 图片所在的页码(从第1页开始计数)
    :param img_save_path: 图片的保存路径
    """

    if page_no <= 0:
        raise ValueError("页码必须大于0")

    # 加载PDF文件
    pdf = pdfplumber.open(pdf_path)
    if pdf is None:
        raise FileNotFoundError("PDF文件不存在")
    if page_no > len(pdf.pages):
        raise ValueError("页码超出PDF文件页数")

    # 定位到图片所在页
    page = pdf.pages[page_no - 1]

    # 获取图片对象
    img = page.images[0]

    # 裁剪图片
    bbox = (img["x0"], img["top"], img["x1"], img["bottom"])
    cropped_page = page.crop(bbox)

    # 生成高保真图片
    hq_img = cropped_page.to_image(resolution=1080)

    # 存储到指定路径
    hq_img.save(dest=img_save_path)
    print(f"图片提取成功,已保存到{img_save_path}")


if __name__ == '__main__':
    extract_image_from_pdf(pdf_path="./resource/paper.pdf", page_no=4, img_save_path="./resource/images/img.png")
